// 本作品采用知识共享 署名-非商业性使用-相同方式共享 3.0 未本地化版本 许可协议进行许可
// 访问 http://creativecommons.org/licenses/by-nc-sa/3.0/ 查看该许可协议
// ==============

// 版权所有：
// @老潘orz  wasdpkj@hotmail.com
// ==============

// Microduino-IDE
// ==============
// Microduino Getting start:
// http://www.microduino.cc/download/

// Microduino IDE Support：
// https://github.com/wasdpkj/Microduino-IDE-Support/

// ==============
// Microduino wiki:
// http://wiki.microduino.cc

// ==============
// E-mail:
// Kejia Pan
// pankejia@microduino.cc

// ==============
// Weibo:
// @老潘orz

#if (ARDUINO >= 100)
#include "Arduino.h"
#include "Print.h"
#else
#include "WProgram.h"
#endif

#include <avr/pgmspace.h>

#define CharToInt(y) (y-32)

#define FONE_SIZE_X 7
#define FONE_SIZE_Y 7

const static byte alphabetBitmap[95][FONE_SIZE_X + 1] PROGMEM = {
  {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01}, // ",0
  {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x01}, //!",1
  {0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x03}, //"",2
  {0x00, 0x00, 0x00, 0x28, 0x7C, 0x7C, 0x28, 0x04}, //#",3
  {0x00, 0x00, 0x00, 0x4C, 0x7A, 0x4F, 0x32, 0x04}, //$",4
  {0x00, 0x00, 0x00, 0x66, 0x16, 0x68, 0x66, 0x04}, //%",5
  {0x00, 0x00, 0x00, 0x38, 0x4F, 0x4D, 0x32, 0x04}, //&",6
  {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x01}, //'",7
  {0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x41, 0x02}, //(",8
  {0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x3E, 0x02}, //)",9
  {0x00, 0x00, 0x00, 0x00, 0x14, 0x08, 0x14, 0x03}, //*",10
  {0x00, 0x00, 0x00, 0x00, 0x08, 0x3E, 0x08, 0x03}, //+",11
  {0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x20, 0x02}, //,",12
  {0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0x03}, //-",13
  {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01}, //.",14
  {0x00, 0x00, 0x00, 0x00, 0x60, 0x3E, 0x03, 0x03}, ///",15
  {0x00, 0x00, 0x3E, 0x45, 0x49, 0x51, 0x3E, 0x05}, //0",16
  {0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x7F, 0x02}, //1",17
  {0x00, 0x00, 0x72, 0x49, 0x49, 0x49, 0x46, 0x05}, //2",18
  {0x00, 0x00, 0x22, 0x41, 0x49, 0x49, 0x36, 0x05}, //3",19
  {0x00, 0x00, 0x18, 0x14, 0x12, 0x7F, 0x10, 0x05}, //4",20
  {0x00, 0x00, 0x27, 0x49, 0x49, 0x49, 0x31, 0x05}, //5",21
  {0x00, 0x00, 0x3E, 0x49, 0x49, 0x49, 0x32, 0x05}, //6",22
  {0x00, 0x00, 0x01, 0x61, 0x11, 0x09, 0x07, 0x05}, //7",23
  {0x00, 0x00, 0x36, 0x49, 0x49, 0x49, 0x36, 0x05}, //8",24
  {0x00, 0x00, 0x26, 0x49, 0x49, 0x49, 0x3E, 0x05}, //9",25
  {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x01}, //:",26
  {0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x26, 0x02}, //;",27
  {0x00, 0x00, 0x00, 0x08, 0x14, 0x22, 0x41, 0x04}, //<",28
  {0x00, 0x00, 0x00, 0x14, 0x14, 0x14, 0x14, 0x04}, //=",29
  {0x00, 0x00, 0x00, 0x41, 0x22, 0x14, 0x08, 0x04}, //>",30
  {0x00, 0x00, 0x00, 0x02, 0x51, 0x09, 0x06, 0x04}, //?",31
  {0x00, 0x00, 0x00, 0x0E, 0x71, 0x49, 0x7E, 0x04}, //@",32
  {0x00, 0x7E, 0x11, 0x11, 0x11, 0x11, 0x7E, 0x06}, //A",33
  {0x00, 0x7F, 0x49, 0x49, 0x49, 0x49, 0x36, 0x06}, //B",34
  {0x00, 0x3E, 0x41, 0x41, 0x41, 0x41, 0x22, 0x06}, //C",35
  {0x00, 0x7F, 0x41, 0x41, 0x41, 0x41, 0x3E, 0x06}, //D",36
  {0x00, 0x3E, 0x49, 0x49, 0x49, 0x49, 0x41, 0x06}, //E",37
  {0x00, 0x7E, 0x09, 0x09, 0x09, 0x09, 0x01, 0x06}, //F",38
  {0x00, 0x3E, 0x41, 0x49, 0x49, 0x49, 0x32, 0x06}, //G",39
  {0x00, 0x7F, 0x08, 0x08, 0x08, 0x08, 0x7F, 0x06}, //H",40
  {0x00, 0x00, 0x00, 0x00, 0x41, 0x7F, 0x41, 0x03}, //I",41
  {0x00, 0x00, 0x20, 0x40, 0x41, 0x41, 0x3F, 0x05}, //J",42
  {0x00, 0x7F, 0x08, 0x08, 0x1C, 0x22, 0x41, 0x06}, //K",43
  {0x00, 0x3F, 0x40, 0x40, 0x40, 0x40, 0x40, 0x06}, //L",44
  {0x7F, 0x01, 0x02, 0x04, 0x02, 0x01, 0x7F, 0x07}, //M",45
  {0x7F, 0x02, 0x04, 0x08, 0x10, 0x20, 0x7F, 0x07}, //N",46
  {0x00, 0x3E, 0x41, 0x41, 0x41, 0x41, 0x3E, 0x06}, //O",47
  {0x00, 0x7F, 0x09, 0x09, 0x09, 0x09, 0x06, 0x06}, //P",48
  {0x00, 0x3E, 0x41, 0x41, 0x61, 0x41, 0x5E, 0x06}, //Q",49
  {0x00, 0x7F, 0x09, 0x09, 0x09, 0x09, 0x76, 0x06}, //R",50
  {0x00, 0x26, 0x49, 0x49, 0x49, 0x49, 0x32, 0x06}, //S",51
  {0x00, 0x00, 0x01, 0x01, 0x7F, 0x01, 0x01, 0x05}, //T",52
  {0x00, 0x3F, 0x40, 0x40, 0x40, 0x40, 0x3F, 0x06}, //U",53
  {0x00, 0x1F, 0x20, 0x40, 0x40, 0x20, 0x1F, 0x06}, //V",54
  {0x3F, 0x40, 0x20, 0x1F, 0x20, 0x40, 0x3F, 0x07}, //W",55
  {0x00, 0x00, 0x63, 0x14, 0x08, 0x14, 0x63, 0x05}, //X",56
  {0x00, 0x00, 0x07, 0x08, 0x70, 0x08, 0x07, 0x05}, //Y",57
  {0x00, 0x61, 0x51, 0x49, 0x45, 0x43, 0x41, 0x06}, //Z",58
  {0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x41, 0x02}, //[",59
  {0x00, 0x00, 0x00, 0x00, 0x03, 0x3E, 0x60, 0x03}, //\",60
  {0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x7F, 0x02}, //]",61
  {0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x04, 0x03}, //^",62
  {0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x03}, //_",63
  {0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x02}, //`",64
  {0x00, 0x00, 0x38, 0x44, 0x44, 0x44, 0x78, 0x05}, //a",65
  {0x00, 0x00, 0x3F, 0x44, 0x44, 0x44, 0x38, 0x05}, //b",66
  {0x00, 0x00, 0x00, 0x38, 0x44, 0x44, 0x44, 0x04}, //c",67
  {0x00, 0x00, 0x38, 0x44, 0x44, 0x44, 0x3F, 0x05}, //d",68
  {0x00, 0x00, 0x38, 0x54, 0x54, 0x54, 0x08, 0x05}, //e",69
  {0x00, 0x00, 0x00, 0x00, 0x7E, 0x05, 0x05, 0x03}, //f",70
  {0x00, 0x00, 0x0E, 0x51, 0x51, 0x51, 0x3E, 0x05}, //g",71
  {0x00, 0x00, 0x7F, 0x04, 0x04, 0x04, 0x78, 0x05}, //h",72
  {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7A, 0x01}, //i",73
  {0x00, 0x00, 0x00, 0x00, 0x40, 0x48, 0x3A, 0x03}, //j",74
  {0x00, 0x00, 0x00, 0x7F, 0x10, 0x28, 0x44, 0x04}, //k",75
  {0x00, 0x00, 0x00, 0x00, 0x3F, 0x40, 0x40, 0x03}, //l",76
  {0x00, 0x00, 0x78, 0x04, 0x78, 0x04, 0x78, 0x05}, //m",77
  {0x00, 0x00, 0x00, 0x7C, 0x04, 0x04, 0x78, 0x04}, //n",78
  {0x00, 0x00, 0x38, 0x44, 0x44, 0x44, 0x38, 0x05}, //o",79
  {0x00, 0x00, 0x7C, 0x12, 0x12, 0x12, 0x0C, 0x05}, //p",80
  {0x00, 0x00, 0x0C, 0x12, 0x12, 0x12, 0x7C, 0x05}, //q",81
  {0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x04, 0x02}, //r",82
  {0x00, 0x00, 0x08, 0x54, 0x54, 0x54, 0x20, 0x05}, //s",83
  {0x00, 0x00, 0x00, 0x00, 0x04, 0x3E, 0x44, 0x03}, //t",84
  {0x00, 0x00, 0x3C, 0x40, 0x40, 0x40, 0x7C, 0x05}, //u",85
  {0x00, 0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x05}, //v",86
  {0x00, 0x00, 0x3C, 0x40, 0x38, 0x40, 0x3C, 0x05}, //w",87
  {0x00, 0x00, 0x44, 0x28, 0x10, 0x28, 0x44, 0x05}, //x",88
  {0x00, 0x00, 0x00, 0x0C, 0x50, 0x50, 0x3C, 0x04}, //y",89
  {0x00, 0x00, 0x44, 0x64, 0x54, 0x4C, 0x44, 0x05}, //z",90
  {0x00, 0x00, 0x00, 0x00, 0x08, 0x3E, 0x41, 0x03}, //{",91
  {0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x02}, //|",92
  {0x00, 0x00, 0x00, 0x00, 0x41, 0x3E, 0x08, 0x03}, //}",93
  {0x00, 0x00, 0x00, 0x02, 0x01, 0x02, 0x01, 0x04} //~",94
};